/*
 * @Author: 邹涵 zouh@wizpower.com
 * @Date: 2024-05-23 10:24:53
 * @LastEditors: 邹涵 zouh@wizpower.com
 * @LastEditTime: 2024-06-26 10:03:39
 * @FilePath: \zj_front\vue.config.js
 * @Description:
 */

// const { name: packageName } = require("./package.json");
// const port = require("./package.json").port;
// const BASE_URL = process.env.NODE_ENV === "production" ? "./" : "/";
const CompressionWebpackPlugin = require("compression-webpack-plugin");

module.exports = {
  publicPath: "./",
  productionSourceMap: false,
  // outputDir: `dist/${packageName}`,
  // productionSourceMap: false,
  // chainWebpack: (config) => {
  //   //忽略的打包文件
  //   config.externals({
  //     vue: "Vue",
  //     "vue-router": "VueRouter",
  //     vuex: "Vuex",
  //     axios: "axios",
  //     "sg-ui": "ELEMENT",
  //   });
  // },
  // css: {
  //   loaderOptions: {
  //     scss: {
  //       prependData: `@import "~@/assets/style/globalstyleVariables.sass";`,
  //     },
  //   },
  // },
  // publicPath: BASE_URL,
  // configureWebpack: {
  //   output: {
  //     library: `${packageName}`,
  //     libraryTarget: "umd",
  //     jsonpFunction: `webpackJsonp_${packageName}`,
  //   },
  // },
  devServer: {
    client: {
      overlay: false, // 编译错误时，取消全屏覆盖（建议关掉）
    },
    // port: port,
    // headers: {
    //   "Access-Control-Allow-Origin": "*",
    // },
    // 反向代理配置
    proxy: process.env.VUE_APP_BASE_URL,
    proxy: {
      "/ms000-gateway": {
        target: "http://172.29.113.252:9998", // 邹涵
        changeOrigin: true,
        pathRewrite: {
          "^/ms000-gateway": "/ms000-gateway",
        },
      },

      "/ami-ms141-archivesinquire": {
        target: "http://172.30.2.253:20600", //邹涵
        changeOrigin: true,
        pathRewrite: {
          "^/ami-ms141-archivesinquire": "",
        },
      },

      "/es": {
        // target: "http://192.168.77.136:9082", //王星星地址
        target: "http://172.16.2.247:9082", //yezhipeng地址
        // target: "http://192.168.0.128:9081", //yezhipeng地址
        changeOrigin: true,
        pathRewrite: {
          "^/es": "/es",
        },
      },
    },
  },

  configureWebpack: (config) => {
    config.optimization = {
      // minimizer
      // runtimeChunk
      // noEmitOnErrors
      // splitChunks
      splitChunks: {
        chunks: "all",
        minSize: 30000, //生成 chunk 的最小体积（以 bytes 为单位）
        minChunks: 2, //拆分前必须共享模块的最小 chunks 数 模块被引用两次以上
        maxAsyncRequests: 5, //按需加载时的最大并行请求数  最大的按需(异步)加载次数，默认为 6；
        maxInitialRequests: 3, //入口点的最大并行请求数。  打包后的入口文件加载时，还能同时加载js文件的数量（包括入口文件），默认为4。
        cacheGroups: {
          // 选项，核心重点，配置提取模块的方案，里面每一项代表一个提取模块的方案
          default: false,
          vendors: false,
          // layer: {
          //   test: /[\\/]node_modules[\\/]vue-layer[\\/]/,
          //   name: 'chunk-layer',
          //   chunks: 'all',
          //   priority: 5  //方案的优先级，值越大表示提取模块时优先采用此方案，默认值为0
          // },
          common: {
            test: /[\\/]node_modules[\\/]/,
            chunks: "all",
            minChunks: 2,
            name: "chunk-vendors",
          },
          styles: {
            //样式抽离
            name: "styles",
            test: /\.(sa|sc|c)ss$/,
            chunks: "all",
            enforce: true,
          },
        },
      },
    };

    if (1 == 1) {
      // 开启gzip压缩
      return {
        plugins: [
          new CompressionWebpackPlugin({
            test: /\.js$|\.html$|\.css/,
            //需要压缩的文件正则
            threshold: 10240, //文件大小大于这个值时启用压缩
            deleteOriginalAssets: false, //压缩后保留原文件
          }),
        ],
      };
    }

    // module.exports = {
    //     productionSourceMap: false,
    //     configureWebpack: config => {
    //         config.plugins.push(new CompressionWebpackPlugin({
    //             filename: '[path][name].gz',
    //             test: /\.(js|css)$/i
    //         }));
    //     }
    // }
  },
};
